An intelligent agent, or intelligent agent program (also referred to herein as simply an agent), can be thought of as a self-contained problem-solving system capable of autonomous, reactive, proactive, social behavior. Agents are clearly identifiable problem-solving entities with well-defined boundaries and interfaces. They are typically situated (embedded) in a particular environment over which they have partial control and observability. They receive inputs related to the state of their environment through sensors, and they act on the environment through effectors. Agents are designed to fulfill a specific role and have particular objectives to achieve. They are autonomous in that they have control over both their internal state and their own behavior. Agents are capable of exhibiting flexible problem-solving behavior in pursuit of their design objectives. They are both reactive, i.e., able to respond in a timely fashion to changes that occur in their environment, and proactive, i.e., able to adopt goals and take initiatives.
Intelligent agents are typically coupled to complex and dynamic environments, and the inputs of the intelligent agent are not readily defined or predictable. Examples of such complex and dynamic environments include control systems and/or security systems for large manufacturing enterprises. Such applications often require multiple agents that will need to interact with one another, either to achieve their individual objectives or to manage dependencies that ensue from being situated in a common environment. These interactions among intelligent agents can vary from simple information passing, through client/server-type interactions, to rich social interactions including the ability to cooperate, coordinate and negotiate about a course of action. In some situations, the agents may all be peers working together as a team, while in other situations, one agent may be the manager of the other agents.
FIG. 1 diagrammatically illustrates a multi-agent system according to the prior art. As shown in FIG. 1, a plurality of agents interact with their “world”, that is, the environment in which they are operating. The agents can also communicate/interact with one another.
Due to the complex and often sensitive environments in which intelligent agents are typically deployed, it is desirable to provide for creation and deployment of intelligent agents in a flexible and secure manner.
According to exemplary embodiments of the invention, the lifecycle properties of an agent (security, performance, functionality, adaptation, etc.) throughout the phases of specification, design, construction (coding), testing, and through deployment and decommissioning are managed by introduction of immutable policies and constraints introduced at the various phases to ensure an operating envelope consistent with the intent of the concerned organizations. This is accomplished with an active (live) agent programming framework that enforces policies and constraints while enabling maximum innovation and adaptation within those constraints during direct human programming as well as agent enacted adaptations to its structure and performance during autonomous operation. This provides a bounded region within the design space within which many different instances of agents can be realized but with guarantees that those boundaries will not be exceeded. Advantages gained in security include some assurances that malicious code is not introduced by programmers during the design and programming phases, limitations on misuse of the agent system during test and deployment, proliferation controls on improperly propagated agent systems (stolen or modified agents and multi-agent systems), and resistance to reverse engineering of agents and multi-agent systems. The primary innovation is to give the agent early in its lifecycle active mechanisms to enforce integrity policies and constraints through introspection into its environment (including operating system and hardware platform, and its sensory and effectors coupled to its external environment) and intercessory controls on its own internal structure (including operating system, applications and hardware platform). Policies and constraints are protected by the agent at all phases of its lifecycle, and strict authorizations are enforced for changes from programmers, users, administrators and other potentially malicious or disruptive entities it encounters during its lifecycle. This is accomplished by a meta-structure that reasons about the purpose, structure, function, and behavior of internal (base) elements of the agent actively during all phases of its lifecycle maintaining homeostatic controls that accomplish policy and constraint enforcement while allowing development and adaptation to occur freely within those constraints.
The ultimate intention of the invention is to deliver agent systems with lifecycle-scope assurance statements to increase confidence in the systems for national security and high-consequence applications.
An agent generator is a precursor program that accepts the organization's policies, requirements, constraints, and specifications for an agent or multi-agent system. It generates one or more agents that actively enforce the organization's original intentions throughout development and deployment.
According to exemplary embodiments of the invention, while an agent generator is generating an intelligent agent, it also evaluates the data processing platform on which it is executing, in order to assess a risk factor associated with operation of the agent generator on the data processing platform. In some embodiments, the agent generator retrieves from a location external to the data processing platform an open site that is configurable by the user. The agent generator loads the open site into an agent substrate, thereby creating a development agent with code development capabilities. In some embodiments, while an intelligent agent is executing a functional program on a data processing platform, it also evaluates the data processing platform to assess a risk factor associated with performing the data processing function on the data processing platform.